---
title: 日志
---

如果一个数据库操作，出现了异常，我们需要排错。日志就是最好的助手！

## 日志工厂

MyBatis 提供了一个日志抽象层，它支持 Log4j2、Log4j、SLF4J、JDK Logging 和 Apache Commons Logging。默认情况下，MyBatis
将会使用日志工厂将日志信息输出到 STDOUT。

使用 settings 的 logimpl 属性指定 MyBatis 所用日志的具体实现，如下所示：

* STDOUT_LOGGING: 标准日志输出
* Log4j2Impl: Log4j2

```xml title='在 MyBatis 核心配置文件中配置日志'

<settings>
    <!--标准的日志工厂-->
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
```

## 使用Log4j2

Log4j 是一个优秀的日志框架，它可以将日志输出到控制台、文件、GUI 组件等。Log4j2 是 Log4j 的升级版本，它的性能更好，使用更方便。
* 我们也可以控制每一条日志的输出格式
* 通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。
* 通过一个配置文件来灵活地定义日志的输出方式，而不需要修改应用的代码。

1. 带入 log4 的 maven 坐标
    ```xml
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    ```

```xml title='在 MyBatis 核心配置文件中配置日志'

<settings>
    <!--标准的日志工厂-->
    <setting name="logImpl" value="LOG4J"/>
</settings>
```
